package cn.edu.xhu.library_management.area.service;

import cn.edu.xhu.library_management.area.entity.LmArea;
import cn.edu.xhu.library_management.area.entity.dto.LmAreaDTO;
import cn.edu.xhu.library_management.area.entity.search.LmAreaSearch;
import cn.edu.xhu.library_management.area.entity.vo.LmAreaVo;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @Author: MMJ
 * @Date: 2022 - 11 - 13
 * @Description: 图书馆区域服务
 */
public interface AreaService {
    /**
     * 通过楼层ID，获取所有区域
     * @param FloorId 楼层ID
     * @return 区域对象集合
     */
    public List<LmArea> findAreasByFloorId(Integer FloorId);

    /**
     * 通过图书馆ID，获取所有区域信息(包含楼层)
     * @param InfoId
     * @return
     */
    public List<LmAreaVo> findAreasByInfoId(Integer InfoId);

    /**
     * 通过区域ID，获取区域对象
     * @param id 区域ID
     * @return 区域对象
     */
    public LmArea findAreaById(Integer id);

    /**
     * 区域搜索
     * @param search 搜索对象
     * @return 区域显示类
     */
    public List<LmAreaVo> search(LmAreaSearch search);

    /**
     * 添加区域
     * @param areaDTO 区域传输对象
     * @return true 添加成功 false 添加失败
     */
    public boolean addArea(LmAreaDTO areaDTO);

    /**
     * 修改区域
     * @param areaDTO 区域传输对象
     * @return true 修改成功 false 修失败
     */
    public boolean updateArea(LmAreaDTO areaDTO);

    /**
     * 删除区域
     * @param id 区域ID
     * @return true 修改成功 false 修失败
     */
    public boolean deleteAreaById(Integer id);

    /**
     * 通过楼层ID和特定类型查询区域信息
     * @param floorId 楼层Id
     * @param type 类型
     * @return 区域对象集合
     */
    List<LmArea> findAreasByType(Integer floorId, Integer type);
}
